package fiuba.algo3.algoThieft.vista;

import java.util.ArrayList;
import java.util.List;

public class Menu {

	private Consola consola;
	private String titulo;
	private List<String> opciones;
	
	private final String ELEGIR_OPCION = "Elija una opcion y presione enter: ";
	private final String ERROR_OPCION_INVALIDA = "ERROR: Opcion no valida";
	
	public Menu(String titulo, List<String> opciones) {
		this.consola = new Consola();
		this.titulo = titulo;
		this.opciones = opciones;
	}

	public Menu(List<String> opciones) {
		this.consola = new Consola();		
		this.opciones = opciones;
	}

	public void mostrarEnConsola() {				
		
		this.consola.mostrar ( this );
		
		
	}

	public String getTitulo() {
		
		return this.titulo;
	}

	public  List<String> getOpciones() {
		
		return this.opciones;
	}
	
	private List<String> generarEntradasValidas() {
		ArrayList<String> valores = new ArrayList<String>();
		
		for ( int numero = 1 ; numero <= this.opciones.size() ; numero++ ){
			valores.add(Integer.toString (numero) );
			}
					
		return valores ;
	}

	public int opcionElegida() {
		this.consola.mostrar( this.ELEGIR_OPCION );
		List<String> valoresValidos = this.generarEntradasValidas();
		String cadenaIngresada = this.consola.obtenerIngreso();
		while( ! (valoresValidos.contains( cadenaIngresada ) ) ){
			this.consola.mostrarLinea( this.ERROR_OPCION_INVALIDA );
			this.consola.mostrar( this );
			this.consola.mostrar( this.ELEGIR_OPCION );
			cadenaIngresada = this.consola.obtenerIngreso();
		}
		
		return Integer.parseInt( cadenaIngresada );
	}

	public void setTitulo(String titulo) {
		this.titulo = titulo;
		
	}
}
